#ifndef AI_H
#define AI_H

#include "game.h"
#include <queue>
#include <vector>

// 路径节点结构
struct PathNode {
    int x;
    int y;
    int value;
};

// 队列节点
struct QueueNode {
    int x;
    int y;
    QueueNode* next;
};

class AI {
public:
    // 初始化AI
    static void initialize();
    
    // 计算下一步移动方向
    static Direction calculateNextMove(const SnakeNode* head, const Food& food);
    
    // 清理资源
    static void cleanup();
    
private:
    // 标记数组
    static int** mark;
    
    // 队列头尾指针
    static QueueNode* queueHead;
    static QueueNode* queueTail;
    
    // 私有方法
    static void resetMarks();
    static void markPath(const Food& food);
    static Direction findBestDirection(const SnakeNode* head);
    static void addToQueue(int x, int y, int value);
    static void processQueue();
    static bool isValidPosition(int x, int y);
    static void clearQueue();
};

#endif // AI_H